• Jump To … +
    zoo_frontend/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js zoo_frontend/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.js zoo_frontend/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.min.js zoo_frontend/node_modules/hoist-non-react-statics/src/index.js zoo_frontend/pages/_app.jsx zoo_frontend/pages/_document.jsx zoo_frontend/pages/admin/delivery-containers/index.js zoo_frontend/pages/admin/department/index.js zoo_frontend/pages/admin/group-diets/index.js zoo_frontend/pages/admin/species/index.js zoo_frontend/pages/admin/user/index.js zoo_frontend/pages/diet/edit.js zoo_frontend/pages/diet/index.js zoo_frontend/pages/diet/new.js zoo_frontend/pages/food/dataSrc.js zoo_frontend/pages/food/edit.js zoo_frontend/pages/food/index.js zoo_frontend/pages/food/new.js zoo_frontend/pages/food/nicknames.js zoo_frontend/pages/food/nutrDef.js zoo_frontend/pages/food/units.js zoo_frontend/pages/home/index.js zoo_frontend/pages/index.jsx zoo_frontend/pages/kitchen/index.js zoo_frontend/pages/kitchen/prep/index.js zoo_frontend/pages/login/index.js zoo_frontend/pages/nutritionist/index.js zoo_frontend/pages/print/bin-label.js zoo_frontend/pages/print/index.js zoo_frontend/pages/print/labels.js zoo_frontend/pages/print/prep-sheet.js zoo_frontend/pages/profile/index.js zoo_frontend/pages/reports/cost-by-gl-code.js zoo_frontend/pages/reports/dept-cards.js zoo_frontend/pages/reports/dept-keeper-cards.js zoo_frontend/pages/reports/feeding-cost.js zoo_frontend/pages/reports/index.js zoo_frontend/pages/reports/prep-cards-table.js zoo_frontend/src/api/Animals.js zoo_frontend/src/api/Api.js zoo_frontend/src/api/BudgetIds.js zoo_frontend/src/api/CaseNotes.js zoo_frontend/src/api/DataSrc.js zoo_frontend/src/api/DeliveryContainers.js zoo_frontend/src/api/Departments.js zoo_frontend/src/api/DietChanges.js zoo_frontend/src/api/DietHistory.js zoo_frontend/src/api/DietPlans.js zoo_frontend/src/api/Diets.js zoo_frontend/src/api/Food.js zoo_frontend/src/api/FoodCategories.js zoo_frontend/src/api/FoodPrepTables.js zoo_frontend/src/api/FoodWeights.js zoo_frontend/src/api/LifeStages.js zoo_frontend/src/api/Locations.js zoo_frontend/src/api/NutData.js zoo_frontend/src/api/NutrDef.js zoo_frontend/src/api/PrepNotes.js zoo_frontend/src/api/RoleMappings.js zoo_frontend/src/api/Roles.js zoo_frontend/src/api/Species.js zoo_frontend/src/api/Subenclosures.js zoo_frontend/src/api/Units.js zoo_frontend/src/api/Users.js zoo_frontend/src/api/index.js zoo_frontend/src/components/ConfirmationDialog.jsx zoo_frontend/src/components/ErrorPage.jsx zoo_frontend/src/components/FormCheckbox.jsx zoo_frontend/src/components/Header.jsx zoo_frontend/src/components/KitchenView.jsx zoo_frontend/src/components/Notifications.jsx zoo_frontend/src/components/PrintPrepSheets/PrepSheetPrintOut.jsx zoo_frontend/src/components/PrintPrepSheets/PrintPrepSheets.jsx zoo_frontend/src/components/PrintPrepSheets/index.js zoo_frontend/src/components/ReactSingleSelect.jsx zoo_frontend/src/components/SidebarDrawer.jsx zoo_frontend/src/components/VirtualTable.jsx zoo_frontend/src/components/index.js zoo_frontend/src/getPageContext.js zoo_frontend/src/pages/PageAccess.js zoo_frontend/src/pages/admin/deliveryContainers/deliveryContainers.jsx zoo_frontend/src/pages/admin/deliveryContainers/deliveryContainers.styles.js zoo_frontend/src/pages/admin/deliveryContainers/index.js zoo_frontend/src/pages/admin/department/department.jsx zoo_frontend/src/pages/admin/department/department.styles.js zoo_frontend/src/pages/admin/department/index.js zoo_frontend/src/pages/admin/groupDiets/groupDiets.jsx zoo_frontend/src/pages/admin/groupDiets/groupDiets.styles.js zoo_frontend/src/pages/admin/groupDiets/index.js zoo_frontend/src/pages/admin/species/index.js zoo_frontend/src/pages/admin/species/species.jsx zoo_frontend/src/pages/admin/species/species.styles.js zoo_frontend/src/pages/admin/user/index.js zoo_frontend/src/pages/admin/user/user.jsx zoo_frontend/src/pages/admin/user/user.styles.js zoo_frontend/src/pages/diet/CaseNotesForm.jsx zoo_frontend/src/pages/diet/CurrentDiet.jsx zoo_frontend/src/pages/diet/DietChangeCard.jsx zoo_frontend/src/pages/diet/DietHistory.jsx zoo_frontend/src/pages/diet/DietPlanChangeDialog.jsx zoo_frontend/src/pages/diet/DietSelectDialog.jsx zoo_frontend/src/pages/diet/diet.jsx zoo_frontend/src/pages/diet/diet.styles.js zoo_frontend/src/pages/diet/dietForm.jsx zoo_frontend/src/pages/diet/dietHistoryList.jsx zoo_frontend/src/pages/diet/edit/edit.jsx zoo_frontend/src/pages/diet/edit/edit.styles.js zoo_frontend/src/pages/diet/edit/index.js zoo_frontend/src/pages/diet/index.js zoo_frontend/src/pages/diet/new/index.js zoo_frontend/src/pages/diet/new/new.jsx zoo_frontend/src/pages/diet/new/new.styles.js zoo_frontend/src/pages/diet/prepNotesForm.jsx zoo_frontend/src/pages/food/dataSrc/dataSrc.jsx zoo_frontend/src/pages/food/dataSrc/dataSrc.styles.js zoo_frontend/src/pages/food/dataSrc/index.js zoo_frontend/src/pages/food/edit/FoodWeightTable.jsx zoo_frontend/src/pages/food/edit/edit.jsx zoo_frontend/src/pages/food/edit/edit.styles.js zoo_frontend/src/pages/food/edit/index.js zoo_frontend/src/pages/food/food.jsx zoo_frontend/src/pages/food/food.styles.js zoo_frontend/src/pages/food/foodForm.jsx zoo_frontend/src/pages/food/index.js zoo_frontend/src/pages/food/new/index.js zoo_frontend/src/pages/food/new/new.jsx zoo_frontend/src/pages/food/new/new.styles.js zoo_frontend/src/pages/food/nicknames/index.js zoo_frontend/src/pages/food/nicknames/nicknames.jsx zoo_frontend/src/pages/food/nicknames/nicknames.styles.js zoo_frontend/src/pages/food/nutrDef/index.js zoo_frontend/src/pages/food/nutrDef/nutrDef.jsx zoo_frontend/src/pages/food/nutrDef/nutrDef.styles.js zoo_frontend/src/pages/food/units/index.js zoo_frontend/src/pages/food/units/units.jsx zoo_frontend/src/pages/food/units/units.styles.js zoo_frontend/src/pages/home/home.jsx zoo_frontend/src/pages/home/home.styles.js zoo_frontend/src/pages/home/index.js zoo_frontend/src/pages/kitchen/index.js zoo_frontend/src/pages/kitchen/kitchenHome.jsx zoo_frontend/src/pages/kitchen/kitchenHome.styles.js zoo_frontend/src/pages/kitchen/prep/index.js zoo_frontend/src/pages/kitchen/prep/kitchen.jsx zoo_frontend/src/pages/kitchen/prep/kitchen.styles.js zoo_frontend/src/pages/login/index.js zoo_frontend/src/pages/login/login.jsx zoo_frontend/src/pages/login/login.styles.js zoo_frontend/src/pages/nutritionist/admin.jsx zoo_frontend/src/pages/nutritionist/admin.styles.js zoo_frontend/src/pages/nutritionist/index.js zoo_frontend/src/pages/print/admin.jsx zoo_frontend/src/pages/print/admin.styles.js zoo_frontend/src/pages/print/bin-label/admin.jsx zoo_frontend/src/pages/print/bin-label/admin.styles.js zoo_frontend/src/pages/print/bin-label/index.js zoo_frontend/src/pages/print/index.js zoo_frontend/src/pages/print/labels/admin.jsx zoo_frontend/src/pages/print/labels/admin.styles.js zoo_frontend/src/pages/print/labels/index.js zoo_frontend/src/pages/print/prep-sheet/admin.jsx zoo_frontend/src/pages/print/prep-sheet/admin.styles.js zoo_frontend/src/pages/print/prep-sheet/index.js zoo_frontend/src/pages/profile/index.js zoo_frontend/src/pages/profile/profile.jsx zoo_frontend/src/pages/profile/profile.styles.js zoo_frontend/src/pages/reports/admin.jsx zoo_frontend/src/pages/reports/admin.styles.js zoo_frontend/src/pages/reports/cost-by-gl-code/admin.jsx zoo_frontend/src/pages/reports/cost-by-gl-code/admin.styles.js zoo_frontend/src/pages/reports/cost-by-gl-code/index.js zoo_frontend/src/pages/reports/dept-cards/admin.jsx zoo_frontend/src/pages/reports/dept-cards/admin.styles.js zoo_frontend/src/pages/reports/dept-cards/index.js zoo_frontend/src/pages/reports/dept-keeper-cards/admin.jsx zoo_frontend/src/pages/reports/dept-keeper-cards/admin.styles.js zoo_frontend/src/pages/reports/dept-keeper-cards/index.js zoo_frontend/src/pages/reports/feeding-cost/admin.jsx zoo_frontend/src/pages/reports/feeding-cost/admin.styles.js zoo_frontend/src/pages/reports/feeding-cost/index.js zoo_frontend/src/pages/reports/index.js zoo_frontend/src/pages/reports/prep-cards-table/admin.jsx zoo_frontend/src/pages/reports/prep-cards-table/admin.styles.js zoo_frontend/src/pages/reports/prep-cards-table/index.js zoo_frontend/src/static/LocalStorage.js zoo_frontend/src/static/Roles.js zoo_frontend/src/util/AuthProvider.jsx zoo_frontend/src/util/PageLayout.jsx zoo_frontend/src/util/TableColumnHelper.js zoo_frontend/src/util/WithPropsChecker.jsx zoo_frontend/src/util/camelToNorm.js zoo_frontend/src/util/withAuth.jsx
  • kitchen.jsx

  • ¶
    import React, { Component } from 'react';
    import PropTypes from 'prop-types';
    
    import Fab from '@material-ui/core/Fab';
    import Input from '@material-ui/core/Input';
    import InputLabel from '@material-ui/core/InputLabel';
    import FormControl from '@material-ui/core/FormControl';
    import NativeSelect from '@material-ui/core/NativeSelect';
    import NextIcon from '@material-ui/icons/NavigateNext';
    import PrevIcon from '@material-ui/icons/NavigateBefore';
    import Paper from '@material-ui/core/Paper';
    import KitchenView from '../../../components/KitchenView';
  • ¶

    import { hasAccess, Home, Diet } from ‘../PageAccess’;

    import {
      DeliveryContainers, DietChanges, Diets, FoodPrepTables, PrepNotes, Species,
    } from '../../../api';
    
    export default class extends Component {
      static propTypes = {
  • ¶

    account: PropTypes.object.isRequired,

        token: PropTypes.string,
        classes: PropTypes.object.isRequired,
        FoodPrepTables: PropTypes.array.isRequired,
        date: PropTypes.string.isRequired,
  • ¶

    eslint-disable-next-line react/no-unused-prop-types

        PrepDiets: PropTypes.array.isRequired,
        PrepDietsSub: PropTypes.array.isRequired,
      };
    
      static defaultProps = {
        token: '',
      }
    
      static async getInitialProps({ query, authToken }) {
        const serverFoodPrepTablesAPI = new FoodPrepTables(authToken);
        const serverDietsAPI = new Diets(authToken);
    
        try {
          const [
            AllFoodPrepTables,
            AllFoodPrep,
          ] = await Promise.all([
            serverFoodPrepTablesAPI.getFoodPrepTables(),
            serverDietsAPI.getAnimalPrep(query.date), // this.props.date !!!!!!!!!!
          ]);
          return {
            ...query,
            FoodPrepTables: AllFoodPrepTables.data,
            PrepDiets: AllFoodPrep.data.diets,
            PrepDietsSub: AllFoodPrep.data.dietsSub,
          };
        } catch (err) {
          console.error(err);
          return {
            error: true,
            FoodPrepTables: [],
            PrepDiets: [],
            PrepDietsSub: [],
          };
        }
      }
    
      constructor(props) {
        super(props);
        this.state = {
          table: 0,
          diets: [],
          currentIndex: 0,
          species: '',
          prepNotes: ['none', 'newline?'],
          dc: '',
          dietChanges: ['none'],
          foodPrep: [],
        };
    
        /* API */
        this.serverDietsAPI = new Diets(this.props.token);
        this.serverSpeciesAPI = new Species(this.props.token);
        this.serverPrepNotesAPI = new PrepNotes(this.props.token);
        this.serverDeliverContainersAPI = new DeliveryContainers(this.props.token);
        this.serverDietChangesAPI = new DietChanges(this.props.token);
      }
    
      async getDietsData(tableID) {
        const [
          diets,
        ] = await Promise.all([
          this.serverDietsAPI.getDiets({
            where: {
              tableId: tableID,
            },
          }),
        ]);
        this.setState({
          diets: diets.data,
        });
      }
    
      /* Data to send as props to KitchenView */
      async getKitchenData(speciesID, dietID, dcID) {
        const [
          species,
          prepNotes,
          dc,
          dietChanges,
        ] = await Promise.all([
          this.serverSpeciesAPI.getSpecies({
            where: {
              speciesId: speciesID,
            },
          }),
          this.serverPrepNotesAPI.getPrepNotes({
            where: {
              dietId: dietID,
            },
          }),
          this.serverDeliverContainersAPI.getDeliveryContainers({
            where: {
              dcId: dcID,
            },
          }),
          this.serverDietChangesAPI.getDietChanges({
            where: {
              dietId: dietID,
            },
          }),
        ]);
    
        this.setState({
          species: species.data[0].species,
          prepNotes: prepNotes.data,
          dc: dc.data[0].dc,
          dietChanges: dietChanges.data.slice(0, 3),
          foodPrep: this.getPrepFood(dietID),
        });
      }
    
      /* Returns the food prep for the diet/animal */
  • ¶

    For entry in dietsSub where diet_id = dietID food, group_amount

      getPrepFood(dietID) {
        const items = this.props.PrepDietsSub.filter(item => item.diet_id === dietID);
        return items;
      }
    
      /* Handle table change !! */
      handleChange = name => event => {
        const e = event.target.value;
        this.setState({ [name]: e, currentIndex: 0 });
        this.getDietsData(e).then(() => {
          this.updateState();
        });
      };
    
      handleNext = () => {
        this.setState((prevState) => ({
          currentIndex: prevState.currentIndex + 1,
        }));
        this.updateState();
      }
    
      handlePrev = () => {
        this.setState((prevState) => ({
          currentIndex: prevState.currentIndex - 1,
        }));
        this.updateState();
      }
    
      updateState = () => this.getKitchenData(
        this.state.diets[this.state.currentIndex].speciesId, // speciesID
        this.state.diets[this.state.currentIndex].dietId, // dietID
        this.state.diets[this.state.currentIndex].dcId, // dcID
        this.props.date,
      );
    
      render() {
  • ¶

    const { role } = this.props.account; eslint-disable-next-line no-shadow

        const { FoodPrepTables, date } = this.props;
    
        return (
          <div style={{
            display: 'flex',
            flexDirection: 'column',
            justifyContent: 'center',
          }}
          >
            <div className={this.props.classes.root}>
              <Fab
                variant="extended"
                aria-label="Previous"
                className={this.props.classes.fab}
                onClick={() => this.handlePrev()}
                disabled={this.state.currentIndex === 0}
              >
                <PrevIcon className={this.props.classes.extendedIcon} />Prev
              </Fab>
              <FormControl className={this.props.classes.formControl}>
                <InputLabel htmlFor="table-native-simple">Prep Table</InputLabel>
                <NativeSelect
                  onChange={this.handleChange('table')}
                  input={<Input name="table" id="table-native-helper" />}
                >
                  <option value="" />
                  {/* value prop is the table_id of FOOD_PREP_TABLES */
                    FoodPrepTables ?
                      FoodPrepTables.map((item) => (
                        <option value={item.tableId}>{item.description}</option>
                      ))
                      : null
                  }
                </NativeSelect>
              </FormControl>
              <Fab
                variant="extended"
                color="secondary"
                aria-label="Next"
                className={this.props.classes.fab}
                onClick={() => this.handleNext()}
                disabled={this.state.currentIndex + 1 >= this.state.diets.length}
    
              >
                Next<NextIcon className={this.props.classes.extendedIcon} />
              </Fab>
            </div>
            <Paper className={this.props.classes.paper}>
              {this.state.table && this.state.diets && this.state.diets.length > 0 ?
                <KitchenView
                  pageLength={this.state.diets.length}
                  currentPage={this.state.currentIndex + 1}
                  species={this.state.species}
                  noteId={this.state.diets[this.state.currentIndex].noteId}
                  prepNotes={this.state.prepNotes}
                  dc={this.state.dc}
                  dietChanges={this.state.dietChanges}
                  foodPrep={this.state.foodPrep}
                  date={date}
                />
                : null
              }
            </Paper>
          </div>
        );
      }
    }